// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.actor.service.app.ws;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
import zeroth.framework.enterprise.shared.EnterpriseException;
import zeroth.framework.service.app.GatewayService;
import zeroth.framework.standard.app.GatewayModel;
/**
* Gateway service client.
* @author nilcy
*/
public final class GatewayServiceClient {
/** ロガー */
@Inject
private Logger log;
/** コンストラクタ */
private GatewayServiceClient() {
super();
}
/**
* Submit SOAP method.
* @param <T> application model type
* @param aSoapRequest SOAP request
* @return SOAP response
* @throws EnterpriseException MalformedURLException or
* WebServiceException
*/
@SuppressWarnings("unchecked")
public <T> T submit(final GatewayModel aSoapRequest) throws EnterpriseException {
URL url;
try {
url = new URL("http://localhost:8080/ReferenceService/CalcService?wsdl");
final QName serviceName = new QName("http://zeroth.com/soap/", "ReferenceService");
final Service service = Service.create(url, serviceName);
log.fine(service.getWSDLDocumentLocation().toString());
final GatewayService port = service.getPort(GatewayService.class);
final Map<String, Object> context = ((BindingProvider) port).getRequestContext();
log.fine(context.entrySet().toString());
final GatewayModel returnedValue = port.submit(aSoapRequest);
return (T) returnedValue.getBody();
} catch (final MalformedURLException e) {
log.warning(e.getLocalizedMessage());
throw new EnterpriseException(e.getLocalizedMessage());
} catch (final WebServiceException e) {
log.warning(e.getLocalizedMessage());
throw new EnterpriseException(e.getLocalizedMessage());
}
}
}